package org.example.enums;

import lombok.Getter;

/**
 * 返回状态码
 *
 * @author wf
 * @date 2019/10/24
 */
public enum ResponseCodeEnum {
    /**
     * 成功
     */
    SUCCESS(10000, "成功"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400002, "参数错误"),

    /**
     * NO_DATA
     */
    SUCCESS_300001(300001, "没有数据"),

    /**
     * 未知异常
     */
    UNKNOWN_ERROR(10002, "未知异常"),

    ERROR_700002(700002, "用户未购买"),

    ERROR_800001(800001, "学习平台错误"),

    ERROR_800002(800002, "打卡错误"),

    /**
     * 系统异常
     */
    SYSTEM_ERROR(9999, "系统异常"),

    /**
     * 当前查询的训练营模块不存在
     */
    CAMP_MODULE_NOT_EXIST(5000, "当前查询的训练营模块不存在"),

    /**
     * 微信支付预订单申请出错
     */
    ERROR_WECHAT_PAY_PRE(300015, "微信支付预订单申请出错"),

    /**
     * 数据库错误
     */
    ERROR_DATABASE(200002, "数据库错误"),
    

    /**
     * 账户处理签名验证失败
     */
    ERROR_ACCOUNT_SIGN(300012, "账户处理签名验证失败"),

    /**
     * 数据已存在
     */
    EXISTENT_DATA(300002, "数据已存在"),

    /**
     * 账户 或 密码错误
     */
    ERROR_NAME_OR_PASSWORD(500004, "账户 或 密码错误"),

    /**
     * 登录过期
     */
    ERROR_PASSWORD_EXPIRES(500005, "登录过期"),

    /**
     * 验证码错误
     */
    ERROR_SMS_CODE(500006, "验证码错误"),

    /**
     * 未登录
     */
    ERROR_NOT_LOGIN(500007, "未登录"),

    /**
     * 没有权限
     */
    NO_PERMISSION(500008, "没有权限"),

    /**
     * 不能绑定用户
     */
    CANT_BIND_USER(600001, "不能绑定用户"),

    /**
     * 重复购买
     */
    REPEAT_PURCHASE(700001, "重复购买");

    /**
     * 返回码
     */
    @Getter
    private int code;
    /**
     * 返回码含义
     */
    @Getter
    private String message;

    ResponseCodeEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * @param code
     * @return
     */
    public static ResponseCodeEnum valueOfByCode(Integer code) {
        for (ResponseCodeEnum poolType : ResponseCodeEnum.values()) {
            if (poolType.getCode() == code) {
                return poolType;
            }
        }
        return UNKNOWN_ERROR;
    }
}

